/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package carreras.ganador.test;

import carreras.Configuracion;
import carreras.entidades.Auto;
import carreras.entidades.CarrilCarrera;
import carreras.entidades.Corredor;
import carreras.entidades.CatCorredorAuto;
import carreras.entidades.CorredorAuto;
import carreras.logger.CarrerasLogger;

/**
 *
 * @author Fanky10 <fanky10@gmail.com>
 */
public class EliminaPerdedorMain {
    
    public static void main(String args[]){
        Configuracion.init_conf(args);
        carreras.entidades.Competencia comp = new carreras.entidades.Competencia(carreras.entidades.Competencia.COMPETENCIA_ELIMINATORIA);
        carreras.entidades.Carrera car = new carreras.entidades.CarreraEliminatoria();
        Corredor corr = new Corredor("Facundo", "Scoccia", 123);
        Auto auto = new Auto("hia-922");
        CorredorAuto ca = new CorredorAuto(auto, corr);
        
        CarrilCarrera cc = new CarrilCarrera(ca, 1);
        cc.setEstado_carrera(CarrilCarrera.ESTADO_GANADOR);
        car.add(cc);
        
        
        corr = new Corredor("Lisandro", "Rezoagli", 123);
        auto = new Auto("hia-921");
        ca = new CorredorAuto(auto, corr);
        
        cc = new CarrilCarrera(ca, 2);
        cc.setEstado_carrera(CarrilCarrera.ESTADO_PERDEDOR);
        car.add(cc);
        
        comp.add(car);
        
        print_result(comp);
        System.out.println("filtrando perdedores...");
        filtra_perdedores(comp);
        System.out.println("Solo ganadores!");
        print_result(comp);
    }
    private static void print_result(carreras.entidades.Competencia comp){
        for(carreras.entidades.Carrera car: comp){
            for(CarrilCarrera c: car){
                System.out.println("carril: "+c.toString());
            }
        }
    }
    private static void filtra_perdedores(carreras.entidades.Competencia comp){
        CarrerasLogger.debug(EliminaPerdedorMain.class, "public new method :D");
        for(carreras.entidades.Carrera car: comp){
            car.eliminaPerdedor();
//            elim_perdedor(car);
//            car.eliminaPerdedor();
            
        }
    
//        //it works
//        //begin
//        for(Carrera car: new Competencia()){
//            for(Carril c: car){
//                if(c.isEs_perdedor())
//                    car.remove(c);
//            }
//        }//end
        
    }
    private static void elim_perdedor(carreras.entidades.Carrera car){
        CarrerasLogger.debug(EliminaPerdedorMain.class, "Eliminando con i as iterator");
        int size = car.size();
        for(int i =0; i<size;i++){
            CarrilCarrera c = car.get(i);
            if(c.esEliminado()){
                car.remove(i);
            }
        }
//        for(CarrilCarrera c: car){
//            boolean delete = c.esEliminado();
//            if(delete)
////            if(c.esEliminado())
//            car.remove(c);
////            if(c.getEstado_carrera() == CarrilCarrera.ESTADO_PERDEDOR){
////                car.remove(c);
////            }
//        }
    }
}
